package modelo.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

import modelo.Empleado;
import modelo.Status;

public class DAOEmpleados {
	protected HashMap<String, Empleado> empleados = new HashMap<String, Empleado>();
	
	public void cargarEmpleados() {
		ResultSet rs = Servidor.consultar(
			"SELECT *\n" +
			"FROM empleado\n"
			);
		
		try {
			while (rs.next()) {
				Empleado e = new Empleado(rs.getString("cedula"), rs.getString("nombre"), rs.getString("apellido"), rs.getString("telefono"), Status.valueOf(rs.getInt("status")));
				empleados.put(e.clave(), e);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public ArrayList<Empleado> consultarEmpleados() {
		ResultSet rs = Servidor.consultar(
			"SELECT cedula\n" +
			"FROM empleado\n"
			);
		
		return adjuntarEmpleado(rs);
	}

	public ArrayList<Empleado> consultarEmpleadosPorStatus(Status status) {
		ResultSet rs = Servidor.consultar(
				"SELECT cedula\n" +
				"FROM empleado\n" +
				"WHERE status = " + status.toInt() + "\n"
				);
			
		return adjuntarEmpleado(rs);
	}
	
	public Empleado consultarEmpleadoPorCodigo(String cod) {
		return empleados.get(cod);
	}
	
	private ArrayList<Empleado> adjuntarEmpleado(ResultSet rs) {
		ArrayList<Empleado> lst = new ArrayList<Empleado>();
		
		try {
			while (rs.next()) {
				lst.add(empleados.get(rs.getString("cedula")));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return lst;
	}
	
}
